An imaging system typically includes an input imaging device that generates image information and an output imaging device that forms a visible representation of the image on an imaging element based on the image information. In a medical imaging system, for example, the input imaging device may include a diagnostic device, such as a magnetic resonance (MR), computed tomography (CT), conventional radiography (X-ray), digital radiography (DR) or ultrasound device. Alternatively, the input imaging device may include a user interface device, such as a keypad, mouse, or trackball, which is also capable of generating medical image information. As a further alternative, the input imaging device may include an image archival workstation for retrieving archived images. The output imaging device in a medical imaging system typically includes a digital laser imager. The laser imager exposes the imaging element in response to the image information to form the visible representation of the image. Alternatively, the laser imager may combine multiple images into an "image page" and expose the imaging element to form a visible representation of the images.
The image information generated by the input imaging device includes image data containing digital image values representative of the image and imaging commands specifying operations to be performed by the laser imager. Each of the digital image values corresponds to one of a plurality of pixels in the original image, and represents an optical density associated with the respective pixel. In response to an imaging command, the laser imager converts the digital image values to generate laser drive values used to modulate the intensity of a scanning laser. The laser drive values are calculated to produce exposure levels, on the imaging element, necessary to reproduce the optical densities associated with the pixels of the original image when the element is developed, either by wet chemical processing or dry thermal processing.
Prior to imaging the element, an output imaging device may perform a number of additional operations on the image data to produce a variety of different format and/or appearance characteristics. Often, it is necessary to rotate the image data 90, 180 or 270 degrees prior to imaging the element. One conventional technique is to write an image into a memory in one direction and read it out in an orthogonal direction. This technique, however, consumes vast amounts of system resources. For example, a typical medical image may have 5120 scan lines, 4096 pixels per scan lines and eight bits per pixel. In order to rotate this typical medical image using conventional techniques requires over 40 MB of memory. Therefore, many imaging systems either incorporate specialized hardware or rely on virtual memory to extend the system's overall memory capacity. Specialized image-rotation hardware is, however, extremely expensive and therefore may not be a viable solution for some imaging systems. Furthermore, virtual memory requires a sophisticated operating system and is inherently slow. Thus, a complex operating system and virtual memory may not be well-suited for certain real-time applications that need to quickly and deterministically respond to events.
For the reasons stated above, and for other reasons stated below which will become apparent to those skilled in the art upon reading and understanding the present specification, there is a need in the art for an image rotation software system capable of rotating an image without requiring specialized hardware, massive amounts of physical memory or virtual memory. Furthermore, there is a need for such a system which is efficient and inexpensive to implement.